package com.happy.unitconvert.service;

import com.happy.unitconvert.model.dto.ExchangeRateResponse;
import reactor.core.publisher.Mono;

import java.util.List;

/**
 * 汇率API服务接口
 * 负责与第三方汇率API进行交互
 *
 * @author Happy
 */
public interface ExchangeRateApiService {

  /**
   * 从外部API获取最新汇率数据
   *
   * @param baseCurrency 基础货币代码
   * @return 汇率响应数据
   */
  Mono<ExchangeRateResponse> fetchLatestRates(String baseCurrency);

  /**
   * 获取支持的货币代码列表
   *
   * @return 支持的货币代码列表
   */
  Mono<List<String>> fetchSupportedCurrencies();

  /**
   * 检查API服务是否可用
   *
   * @return true 如果API可用，false 如果不可用
   */
  Mono<Boolean> checkApiHealth();

  /**
   * 解析API响应数据
   *
   * @param responseBody API响应体
   * @return 解析后的汇率响应对象
   */
  ExchangeRateResponse parseExchangeRateResponse(String responseBody);
}
